package com.xiao.util;


import com.xiao.pojo.User;
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;

import java.util.Date;

public class JwtUtil {

    static final long PASS_TIME = 60*60*1000*24;//过期时间 3 分钟

    static final String KEY = "laozhangshuaidehen"; // 密钥

    static final String SUBJECT = "lzclass";//令牌

    static final String TOKEN_PREFIX = "tyjhsdsdasnf";

    /**
     * 根据用户信息，生成令牌
     *
     * @param user
     * @return
     */
    public static String geneJsonWebToken(User user) {

        String token = Jwts.builder().setSubject(SUBJECT)
                .claim("uid", user.getUid())
                .setIssuedAt(new Date())//发布时间
                .setExpiration(new Date(System.currentTimeMillis() + PASS_TIME))//过期时间
                .signWith(SignatureAlgorithm.HS256, KEY).compact();//加密方式

        token = TOKEN_PREFIX + token;
        return token;
    }

    /**
     * 校验token的方法
     *
     * @param token
     * @return
     */
    public static Claims checkJWT(String token) {

        try {

            final Claims claims = Jwts.parser().setSigningKey(KEY)
                    .parseClaimsJws(token.replace(TOKEN_PREFIX, "")).getBody();

            return claims;

        } catch (Exception e) {

            System.out.println("解密失败");

            return null;
        }

    }


}
